package com.zang.blogz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zang.blogz.entity.Job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zang.blogz.model.input.ro.JobRO;
import com.zang.blogz.model.input.ro.JobRunRO;
import com.zang.blogz.model.input.ro.JobSearchRO;
import com.zang.blogz.model.input.ro.JobStatusRO;
import com.zang.blogz.model.output.JobVO;
import com.zang.blogz.result.Result;

import java.util.List;

/**
 * <p>
 * 定时任务调度表 服务类
 * </p>
 *
 * @author 朵橙i
 * @since 2022-09-04
 */
public interface JobService extends IService<Job> {

    /**
     * 添加定时任务
     */
    Result<JobRO> saveJob(JobRO jobRO);

    /**
     * 修改定时任务
     */
    Result<JobRO> updateJob(JobRO jobRO);

    /**
     * 批量删除定时任务
     */
    Result<Boolean> deleteByIds(List<Integer> jobIds);

    /**
     * 获取定时任务列表
     */
    IPage<JobVO> listJobs(JobSearchRO jobSearchRO, Page<Job> page);

    /**
     * 更改任务的状态
     */
    Result<JobStatusRO> updateJobStatus(JobStatusRO jobStatusRO);

    /**
     * 执行某个任务
     */
    Result<Boolean> runJob(JobRunRO jobRunRO);

    /**
     *获取所有job分组
     */
    List<String> listJobGroup();

    /**
     * 删除定时任务
     */
    Result<Boolean> deleteById(Integer id);
}
